﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TagLibDemo
{
    internal class Program
    {
        static string CURRENT_DIRECTORY = AppDomain.CurrentDomain.BaseDirectory;

        static void Main(string[] args)
        {
            // 1. 获取路径中所有的 ogg 文件
            Console.WriteLine("请输入 mp3, ogg 文件所在的目录...");
            string musicPath = Console.ReadLine().Trim();

            // 2. 遍历路径中的文件，逐个处理
            DirectoryInfo di = new DirectoryInfo(musicPath);
            if (!di.Exists)
            {
                Console.WriteLine($"路径 {musicPath} 不存在");
                Console.ReadLine();
                return;
            }

            FileInfo[] musicfileInfos = di.GetFiles().ToArray();
            foreach (FileInfo musicFileInfo in musicfileInfos)
            {
                if (!musicFileInfo.Name.EndsWith(".ogg") && !musicFileInfo.Name.EndsWith(".mp3"))
                {
                    continue;
                }

                try
                {
                    using (TagLib.File audio = TagLib.File.Create(musicFileInfo.FullName))
                    {
                        Console.WriteLine($"正在处理 {musicFileInfo.Name}，请输入或拖拽 封面 的路径...");
                        string albumPath = Console.ReadLine().Trim('\"');

                        FileInfo albumFileInfo = new FileInfo(albumPath);
                        if (!albumFileInfo.Exists)
                        {
                            Console.WriteLine($"{musicFileInfo.Name}，处理失败， 封面 路径不正确");
                            continue;
                        }

                        // 引用本地图片
                        audio.Tag.Pictures = new TagLib.IPicture[] { new TagLib.Picture(albumFileInfo.FullName) };
                        // 保存修改并释放资源
                        audio.Save();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"{musicFileInfo.Name}，处理失败，错误：{ex.Message}");
                }

            }

            Console.Write("处理完成");
            Console.ReadLine();
        }
    }
}
